今天來介紹一個好用的工具,rosbag
。這個功能剛好可以解決我之前在做機器人的時候遇到的限制,也就是在機器人行走的時候,由於沒辦法接螢幕的關係,很難在實際應用的時候debug。rosbag
就是一個用來記錄的工具,他可以記錄某個topic
輸出的訊息,並在之後可以重新執行一遍記錄內的訊息,這樣講有點抽象,直接來實作看看吧!
首先先執行我們昨天寫好的startup.launch
檔:
$ roslaunch beginner_tutorials startup.launch
可以看到他自動幫我們執行了talker.py
這個檔案,也就是我們之前寫的會針對/chatter
這個topic
發送訊息的教學,簡單來講,這個node會每秒輸出一個hello from python
就對啦!
使用rosbag
可以針對該topic
接收到的訊息,進行紀錄的部分,只需要執行這個指令:
$ rosbag record <topic_name>
(請忽略我的硬碟空間不足XD)
這樣他就會開始記錄囉! 我大概過25秒之後關掉,會發現多了一個.bag
檔,這時候可以用rosbag info
查看該bag
檔的資訊:
$ rosbag info <bag_name>
可以看到這個bag
檔的資訊,其中有25條message
就是被記錄下來的資訊。
使用rosbag play
可以重新執行這個紀錄檔,並使用rostopic echo
可以看到該topic
重新接收到該紀錄檔發布的訊息:
$ rosbag play <bag_name>
可以看到左邊是使用rosbag
執行紀錄檔,並在右邊的topic
監聽中重新播出來。
簡單來講,這個rosbag
的功能就是用來紀錄啦! 可以在出去外面跑實作的時候先把狀態記錄下來,之後再回放查看有沒有bug,是不是真的很方便呢!
ros wiki - rosbag
ros wiki - rosbag command line
ros tutorials - recording and playing back data